#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include "IO_port_test.h"

int main()
{
	int IO_porttest;
	int code;
	unsigned int current_status;
	char input=0 ;

	
	IO_porttest = open("/dev/IO_port",O_RDONLY );

	if ( lseek(IO_porttest,0,SEEK_SET) == -1) printf("IO_port: the module can not lseek!\n");

	for ( ; input != 'q' ; getchar()) 	{
		
		printf("please input the command :");
		input= getchar();
		switch(input) {

	case '0':
		if ((code=ioctl( IO_porttest , IO_PORT_0  , NULL ) ) < 0) printf("IO_port: ioctl IO_port_485 error! code=%d \n",code);
		else   printf("IO_port: ioctl 0 ok!  \n");
		break;
	case '1':
		if ((code=ioctl( IO_porttest , IO_PORT_1  , NULL ) ) < 0) printf("IO_port: ioctl IO_port_RS232 error! code=%d \n",code);
		else   printf("IO_port: ioctl 1 ok!  \n");
		break;
	case '2':
		if ((code=ioctl( IO_porttest , IO_PORT_2  , NULL ) ) < 0) printf("IO_port: ioctl IO_port_IOR error! code=%d \n",code);
		else   printf("IO_port: ioctl 2 ok!  \n");
		break;
	case '3':
		if ((code=ioctl( IO_porttest , IO_PORT_3  , NULL ) ) < 0) printf("IO_port: ioctl IO_port_IOW error! code=%d \n",code);
		else   printf("IO_port: ioctl 3 ok! \n");
		break;

	 case '8':
		if ((code=ioctl( IO_porttest ,IO_PORT_STATUS , &current_status ) ) < 0) printf("IO_port: ioctl IO_port_STATUS error! code=%d \n",code);
		else   printf("IO_port: ioctl STATUS ok! current_status=0X%x\n",current_status);
		
		break;

	case 'q':
		break;

	 default:  /* redundant, as cmd was checked against MAXNR */
		printf("IO_port:  Invalid input ! only 0,1,2,3,8,q !\n");
	}
}	
	close(IO_porttest);
 
 exit(0);
}
